package com.cm.etax;

import com.cm.kits.YamlKits;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**
 * 电子税务局访问配置文件
 *
 * @author LWang 2023.01.29
 * @since 1.0.0
 */
@ToString
@NoArgsConstructor
public class EtaxConfig {
    /**
     * 电子税务局域名（URL，完整域名，如：<a href="https://www.example.com/">https://www.example.com</a>）
     */
    @Setter
    @Getter
    private String domain;

    /**
     * 企业电子税务局主页（URL，含完整域名，如：<a href="https://www.example.com/index.html">https://www.example.com/index.html</a>）
     */
    @Setter
    @Getter
    private String enterpriseMainUrl;

    /**
     * 自然人电子税务局主页（URL，含完整域名，如：<a href="">https://www.example.com/index.html</a>）
     */
    @Setter
    @Getter
    private String humanMainUrl;

    /**
     * 企业电子税务局主页（URI，不含完整域名，如：/index.html）
     */
    @Setter
    @Getter
    private String enterpriseHomeUri;

    /**
     * 自然人电子税务局主页（URI，不含完整域名，如：/index.html）
     */
    @Setter
    @Getter
    private String humanHomeUri;

    public String getMainUrl() {
        return LOGIN_TYPE_ENTERPRISE == loginType ? enterpriseMainUrl : humanMainUrl;
    }

    public String getHomeUri() {
        return LOGIN_TYPE_ENTERPRISE == loginType ? enterpriseHomeUri : humanHomeUri;
    }

    public static final int LOGIN_TYPE_ENTERPRISE = 0;

    public static final int LOGIN_TYPE_HUMAN = 1;

    /**
     * 登录用户类型：0，企业；1，自然人
     */
    @Getter
    @Setter
    private int loginType = 0;


    /**
     * 创建电子税务局访问配置文件
     *
     * @param config 配置文件
     * @return 配置对象
     */
    public static EtaxConfig build(String config) {
        return YamlKits.load(config, EtaxConfig.class);
    }

}
